home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 363 / xlisp20 / readme.1st < prev    next >
Text File  |  1985-11-19  |  7KB  |  211 lines

  1. This is a list of new features in XLISP version 2.0 so far.
  2.  
  3. >>>> Changes for T5:
  4.  
  5. Fixed some bugs in initialization and in the RESTORE function.
  6.  
  7. >>>> Changes for T4:
  8.  
  9. The special form PROGV was added to support establishing
  10. dynamically scoped variables.
  11.  
  12. The symbols *ERROR-OUTPUT* and *DEBUG-IO* have been added and
  13. are bound to streams that are used for error output and debug
  14. i/o respectively.
  15.  
  16. The symbol *GC-HOOK* has been added.  If it is bound to a function
  17. of two arguments, that function will be called after the garbage
  18. collector runs.  The two parameters are the total number of nodes
  19. and the number free after the garbage collection.
  20.  
  21. A bug in the handling of *GC-FLAG* has been fixed.  It sometimes
  22. caused symbols that were 'under construction' during a call to
  23. the garbage collector to get corrupted.
  24.  
  25. >>>> Changes for T3:
  26.  
  27. The following symbols preserve a history of values used by the
  28. read-eval-print loop:
  29.  
  30.     -        the current input expression
  31.     +        the last expression read
  32.     ++        the previous value of +
  33.     +++        the previous value of ++
  34.     *        the result of the last evaluation
  35.     **        the previous value of *
  36.     ***        the previous value of **
  37.  
  38. Changed the default value of *print-case* to :upcase.
  39.  
  40. Added macros to xlisp.ini for:
  41.  
  42.     (defvar sym &optional val)
  43.     (defparameter sym val)
  44.     (defconstant sym val)
  45.  
  46. Macintosh specific T3 changes:
  47.  
  48. Fixed a bug in the EXP function.
  49.  
  50. >>>> Changes for T2:
  51.  
  52. The global symbol *PRINT-CASE* was added to control the output case of
  53. symbols.  Its default value is :DOWNCASE which will cause symbols to
  54. be printed in lowercase.  You can change it to :UPCASE to get symbols
  55. to print in uppercase (as they did in previous XLISP releases).
  56.  
  57. *BREAKENABLE* will again override ERRSET to make it possible to debug
  58. programs that use ERRSET.  I changed this behavior for T1, but have
  59. since reconsidered due to some input from an XLISP user.
  60.  
  61. I have added the functions FIRST, SECOND, THIRD, FOURTH and REST as
  62. synonyms for CAR, CADR, CADDR, CADDDR and CDR.
  63.  
  64. I fixed a bug in the reader which caused strange results to occur when
  65. reading a list with an embedded comment.
  66.  
  67. Macintosh specific T2 changes:
  68.  
  69. Added the function (COMMAND-POINT-SIZE <n>) to set the point size for the
  70. text in the command window.  The default point size is now 9.
  71.  
  72. Fixed a bug in the RANDOM function.
  73.  
  74. >>>> Changes for T1:
  75.  
  76. The most important change from version 1.7 to 2.0 of XLISP is that
  77. it is now possible to save XLISP's workspace between sessions.  This
  78. feature is used by the XLISP system to avoid having lots of initialization
  79. data stored in the XLISP executable image itself.  For this reason,
  80. the XLISP executable, by itself, is only capable of evaluating two special
  81. forms.  These forms are DEFINE-SUBR and DEFINE-FSUBR.  In order to
  82. initialize XLISP, it is necessary to have the executable image and the
  83. file "xlisp.ini".  This file defines all of the built-in functions and
  84. special forms and writes out a default workspace file called "xlisp.wks".
  85.  
  86. To start from scratch with these two files (and possibly a file called
  87. "osdefs.ini" with system specific definitions), remove any existing copy
  88. of "xlisp.wks" from the current directory, then start the XLISP executable
  89. image.  It should read in the file "xlisp.ini" and write the file
  90. "xlisp.wks".  After the initial workspace "xlisp.wks" has been created,
  91. the initialization file "xlisp.ini" is no longer needed.  From then on,
  92. XLISP will read the file "xlisp.wks" during initialization, followed by
  93. "init.lsp".
  94.  
  95. The &key lambda list keyword is now supported as are initialization forms
  96. for &optional, &key and &aux parameters.  The supplied-p variables are
  97. also supported for &optional and &key parameters.
  98.  
  99. (save filename)
  100. (restore filename)
  101. (defstruct symbol [slot-def]...)
  102. (subseq string start [end])
  103. (open name &key :direction)
  104. (vector [expr]...)
  105. (block name [expr]...)
  106. (return-from name [value])
  107. (tagbody [tag|expr]...)
  108. (psetq [sym value]...)
  109. (flet ([sym lambda-list [body]...]...) [expr]...)
  110. (labels ([sym lambda-list [body]...]...) [expr]...)
  111. (macrolet ([sym lambda-list [body]...]...) [expr]...)
  112. (unwind-protect expr [expr]...)
  113. (when test [expr]...)
  114. (unless test [expr]...)
  115. (loop [expr]...)
  116. (pprint expr [stream])
  117. (string< str1 str2 &key :start1 :end1 :start2 :end2)
  118. (string= str1 str2 &key :start1 :end1 :start2 :end2)
  119. (string> str1 str2 &key :start1 :end1 :start2 :end2)
  120. (string<= str1 str2 &key :start1 :end1 :start2 :end2)
  121. (string/= str1 str2 &key :start1 :end1 :start2 :end2)
  122. (string>= str1 str2 &key :start1 :end1 :start2 :end2)
  123. (string-lessp str1 str2 &key :start1 :end1 :start2 :end2)
  124. (string-equal str1 str2 &key :start1 :end1 :start2 :end2)
  125. (string-greaterp str1 str2 &key :start1 :end1 :start2 :end2)
  126. (string-not-greaterp str1 str2 &key :start1 :end1 :start2 :end2)
  127. (string-not-equal str1 str2 &key :start1 :end1 :start2 :end2)
  128. (string-not-lessp str1 str2 &key :start1 :end1 :start2 :end2)
  129. (string-trim bag string)
  130. (string-left-trim bag string)
  131. (string-right-trim bag string)
  132. (string-upcase string &key :start :end)
  133. (string-downcase string &key :start :end)
  134. (nstring-upcase string &key :start :end)
  135. (nstring-downcase string &key :start :end)
  136. (symbol-function sym)
  137. (send obj msg [expr]...)
  138. (send-super msg [expr]...)
  139. (integerp expr)
  140. (floatp expr)
  141. (stringp expr)
  142. (arrayp expr)
  143. (streamp expr)
  144. (objectp expr)
  145. (fboundp expr)
  146.  
  147.  
  148. These symbols control the format in which numbers are printed.  They
  149. should be set to printf format strings.
  150.  
  151.     *integer-format*    (default is "%d" or "%ld")
  152.     *float-format*     (default is "%g")
  153.  
  154.  
  155. (substr string start [length]) is replaced by:
  156.     (subseq string start [end])
  157.  
  158.  
  159. (openi name) is replaced by: (open name :direction :input)
  160. (openo name) is replaced by: (open name :direction :output)
  161.  
  162.  
  163. OPEN and LOAD take strings as file names, symbols are no longer
  164. accepted.
  165.  
  166.  
  167. ERRSET overrides *BREAKENABLE* and traps errors rather than entering
  168. the break loop.
  169.  
  170.  
  171. The LAMBDA special form has been removed.
  172.  
  173.  
  174. Symbols have two value cells, one for normal values and one for
  175. function values.  SETQ sets the normal value, DEFUN sets the
  176. functional value.
  177.  
  178.  
  179. The SEND-SUPER function replaces the :SENDSUPER message to objects.
  180. All messages must be sent using either the SEND function or the
  181. SEND-SUPER function.  In other words, the syntax:
  182.  
  183.     (Class :new '(a b c))
  184.  
  185. must now be written as:
  186.  
  187.     (send Class :new '(a b c))
  188.  
  189. and
  190.  
  191.     (self :sendsuper :msg 1 2 3)
  192.  
  193. must now be written as:
  194.  
  195.     (send-super :msg 1 2 3)
  196.  
  197. This is because the CAR of a form is no longer evaluated.  To get the
  198. effect of having the function position evaluated, use the FUNCALL form.
  199.  
  200.  
  201. The syntax of LOAD has changed from:
  202.  
  203.     (load name [verbose-flag [print-flag]])
  204.  
  205. to:
  206.  
  207.     (load name &key :verbose :print)
  208.  
  209.  
  210.  
  211. əəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəə